一、STM32F405系统时钟自我学习笔记 您所在的位置:网站首页 stm32 405 407区别 一、STM32F405系统时钟自我学习笔记

一、STM32F405系统时钟自我学习笔记

2024-07-01 21:18| 来源: 网络整理| 查看: 265

STM32F40x系统时钟自我学习笔记 时钟源简介时钟树解析①HSE 高速外部时钟信号②锁相环PLL③系统时钟SYSCLK④AHB 总线时钟HCLK⑤APB2 总线时钟HCLK2⑥APB1 总线时钟HCLK1A、RTC 时钟B、独立看门狗时钟C、I2S 时钟D、PHY以太网时钟E、USB PHY 时钟F、MCO 时钟输出 KEIL内的时钟计算主时钟计算其他外设时钟计算

时钟源简介

在 STM32F4 中,有 5 个重要的时钟源,分别为 HSI、HSE、LSI、LSE、PLL。其中 PLL 又分为主 PLL 和专用 PLL。上述时钟根据英文缩写可以判断时钟的高低频和内外部时钟。

时钟树解析

在这里插入图片描述

①HSE 高速外部时钟信号 当使用有源晶振时,时钟从OSC_IN 引脚进入,OSC_OUT 引脚悬空;当选用无源晶振时,时钟从OSC_IN 和OSC_OUT 进入,并且要配谐振电容。当HSE 故障时,高速的内部时钟信号HSI会作为备用的系统时钟,直到HSE恢复正常,HSI=16M。 ②锁相环PLL HSE 或者HSI 经过PLL 时钟输入分频因子PPLM(2-63)分频后,成为VCO 的时钟输入,VCO 的时钟必须在1~2M 。PLL的配置经过根据公式可得: VCOCLK_IN = PLLCLK_IN / M = HSE / PLLMVCOCLK_OUT = VCOCLK_IN * N = HSE/PLLM*PLLNPLLCLK_OUT=VCOCLK_OUT/PLLP = HSE*PLLN/(PLLM * PLLP)如果使能了PLL,则PLLCLK即为我们需要的时钟。 ③系统时钟SYSCLK 系统时钟来源可以是:HSI、PLLCLK、HSE,具体的由时钟配置寄存器RCC_CFGR的SW位配置。 可以在system_stm32f4xx.c文件中配置 #define RCC_CFGR_SW_HSI ((uint32_t)0x00000000) /*!< HSI selected as system clock */ #define RCC_CFGR_SW_HSE ((uint32_t)0x00000001) /*!< HSE selected as system clock */ #define RCC_CFGR_SW_PLL ((uint32_t)0x00000002) /*!< PLL selected as system clock */ /* Select the main PLL as system clock source */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC->CFGR |= RCC_CFGR_SW_PLL; /* Wait till the main PLL is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); { }

上图即配置时钟来源为PLLCLK。

④AHB 总线时钟HCLK 系统时钟SYSCLK经过AHB预分频器分频之后得到时钟叫APB总线时钟,片上的大部分时钟都是由HCLK分频得到的。根据上面讲述的PLLCLK的配置,可知这里的HCLK即为PLLCLK。我们也可以通过选择RCC_CFGR_SWS_HSI或RCC_CFGR_SWS_HSE来更换系统时钟来源。 ⑤APB2 总线时钟HCLK2 APB2的时钟频率由HCLK分频得来,分频可设。高频时钟,以F405为例,最大允许84M。 ⑥APB1 总线时钟HCLK1 APB1的时钟频率由HCLK分频得来,分频可设。低频时钟,以F405为例,最大允许42MAHB、APB1、APB2在system_stm32f4xx.c文件的配置详情见下面的代码块。 /* HCLK = SYSCLK / 1*/ RCC->CFGR |= RCC_CFGR_HPRE_DIV1;//AHB #if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) /* PCLK2 = HCLK / 2*/ RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;//APB2 /* PCLK1 = HCLK / 4*/ RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;//APB1 A、RTC 时钟 RTCCLK 时钟源可以是 HSE 1 MHz、 LSE 或者 LSI时钟。通常的做法是由LSE 给RTC 提供时钟,大小为32.768KHZ。LSE由外接的晶体谐振器产生,所配的谐振电容精度要求高,不然很容易不起震。 B、独立看门狗时钟

-由内部的低速时钟LSI提供,大小为32KHZ。

C、I2S 时钟 I2S时钟可由外部的时钟引脚I2S_CKIN输入,也可由专用的PLLI2SCLK提供。 D、PHY以太网时钟 F429要想实现以太网功能,除了有本身内置的MAC之外,还需要外接一个PHY芯片。当使用RMII接口时,PHY芯片只需输出一路时钟给MCU即可。如果是MII接口,PHY芯片则需要提供两路时钟给MCU。 E、USB PHY 时钟 当外接USB PHY芯片时,PHY芯片需要给MCU提供一个时钟。如果当前芯片内部没有集成PHY芯片,则需要外接一个PHY芯片。 F、MCO 时钟输出 MCO是microcontroller clock output的缩写,是微控制器时钟输出引脚,主要作用是可以对外提供时钟,相当于一个有源晶振。 KEIL内的时钟计算 主时钟计算 此处我们只计算时钟来源为PLLCLK,即系统时钟由PLL倍频而来的情况。那么SYSCLK = PLLCLK = HSE*PLLN/(PLLM * PLLP) 其他外设时钟计算 HCLK = SYSCLK = PLLCLKHCLK1 = PLLCLK / 4HCLK2 = PLLCLK / 2这个分频比一般都不会变,但是在发现按照这个默认值计算的时钟不对时,要及时的检查配置并计算实际的时钟情况。APB1上的外设包括: DACENCANEN(1、2)I2CEN(1、2、3)UART(4、5)USARTEN(2、3)SPIEN(2、3)WWDGEN(窗口看门狗)TIMEN(2、3、4、5、6、7、12、13、14) APB2上的外设包括: -TIMEN(1、8、9、10、11) SYSCFGENSPIEN(1)SDIOEN(安全数字输入输出接口)ADCEN(1、2、3)USARTEN(1、6)

总结一句,用于记忆,即: APB2负责AD,I/O,高级TIM,串口1、6。 APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM 但这句总结不够严谨,我们可以根据上图面的记录看出,APB1并不负责所有的SPI,但可以用于记录大部分的内容,开发就是如此,既要通过这种口诀记忆一般芯片的通性,又要根据手册去对比验证,这样能确保万无一失。

此文档由学习了“小峰学长生活大爆炸”的文章而来,叙述部分肯定有一些相似之处,但也有我的理解和补充,本意是为了再次加深印象和供以后查阅,如有冒犯,可联系本人。谢谢。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有